import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import fs from 'fs'
import path from 'path'

// 自定义插件：复制 manifest.json 到构建目录
function copyManifest() {
  return {
    name: 'copy-manifest',
    // 在构建完成后执行
    closeBundle() {
      const manifestSrc = path.resolve(__dirname, 'manifest.json')
      const manifestDest = path.resolve(__dirname, 'dist/manifest.json')

      // 复制文件
      fs.copyFileSync(manifestSrc, manifestDest)
      console.log('✓ manifest.json 已复制到 dist 目录')
    },
  }
}

export default defineConfig({
  resolve: {
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },
  // Vue 插件配置
  plugins: [
    vue(), // Vue3 支持
    copyManifest(), // 自定义复制插件
  ],

  // 构建配置
  build: {
    // Rollup 构建选项 background.js 构建时不依赖utils.js

    rollupOptions: {
      // 多入口配置 - 为不同的脚本定义入口点
      input: {
        popup: './src/popup/index.html', // 弹窗页面
        // options: './src/options/index.html', // 设置页面
        newtab: './src/newtab/index.html',
        background: 'src/background/index.js', // 后台脚本
        // content: 'src/content/index.js', // 内容脚本
      },
      // 输出配置
      output: {
        // 入口文件命名格式
        entryFileNames: '[name].js',
        // 代码分割文件命名格式
        chunkFileNames: '[name].js',
        // 资源文件命名格式
        assetFileNames: '[name].[ext]',
      },
    },
    // 输出目录
    outDir: 'dist',
  },
})
